home *** CD-ROM | disk | FTP | other *** search
-
- RESOLVER(3) UNIX Programmer's Manual RESOLVER(3)
-
- NNAAMMEE
- rreess__qquueerryy, rreess__sseeaarrcchh, rreess__mmkkqquueerryy, rreess__sseenndd, rreess__iinniitt, ddnn__ccoommpp,
- ddnn__eexxppaanndd - resolver routines
-
- SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ssyyss//ttyyppeess..hh>>
- ##iinncclluuddee <<nneettiinneett//iinn..hh>>
- ##iinncclluuddee <<aarrppaa//nnaammeesseerr..hh>>
- ##iinncclluuddee <<rreessoollvv..hh>>
-
- rreess__qquueerryy(_c_h_a_r _*_d_n_a_m_e, _i_n_t _c_l_a_s_s, _i_n_t _t_y_p_e, _u___c_h_a_r _*_a_n_s_w_e_r, _i_n_t _a_n_s_l_e_n)
-
- rreess__sseeaarrcchh(_c_h_a_r _*_d_n_a_m_e, _i_n_t _c_l_a_s_s, _i_n_t _t_y_p_e, _u___c_h_a_r _*_a_n_s_w_e_r, _i_n_t _a_n_s_l_e_n)
-
- rreess__mmkkqquueerryy(_i_n_t _o_p, _c_h_a_r _*_d_n_a_m_e, _i_n_t _c_l_a_s_s, _i_n_t _t_y_p_e, _c_h_a_r _*_d_a_t_a,
- _i_n_t _d_a_t_a_l_e_n, _s_t_r_u_c_t _r_r_e_c _*_n_e_w_r_r, _c_h_a_r _*_b_u_f, _i_n_t _b_u_f_l_e_n)
-
- rreess__sseenndd(_c_h_a_r _*_m_s_g, _i_n_t _m_s_g_l_e_n, _c_h_a_r _*_a_n_s_w_e_r, _i_n_t _a_n_s_l_e_n)
-
- rreess__iinniitt()
-
- ddnn__ccoommpp(_c_h_a_r _*_e_x_p___d_n, _c_h_a_r _*_c_o_m_p___d_n, _i_n_t _l_e_n_g_t_h, _c_h_a_r _*_*_d_n_p_t_r_s,
- _c_h_a_r _*_*_l_a_s_t_d_n_p_t_r)
-
- ddnn__eexxppaanndd(_u___c_h_a_r _*_m_s_g, _u___c_h_a_r _*_e_o_m_o_r_i_g, _u___c_h_a_r _*_c_o_m_p___d_n, _u___c_h_a_r _*_e_x_p___d_n,
- _i_n_t _l_e_n_g_t_h)
-
- DDEESSCCRRIIPPTTIIOONN
- These routines are used for making, sending and interpreting query and
- reply messages with Internet domain name servers.
-
- Global configuration and state information that is used by the resolver
- routines is kept in the structure ___r_e_s. Most of the values have reason-
- able defaults and can be ignored. Options stored in ___r_e_s_._o_p_t_i_o_n_s are de-
- fined in _r_e_s_o_l_v_._h and are as follows. Options are stored as a simple bit
- mask containing the bitwise ``or'' of the options enabled.
-
- RES_INIT True if the initial name server address and default domain
- name are initialized (i.e., rreess__iinniitt() has been called).
-
- RES_DEBUG Print debugging messages.
-
- RES_AAONLY Accept authoritative answers only. With this option,
- rreess__sseenndd() should continue until it finds an authoritative
- answer or finds an error. Currently this is not implement-
- ed.
-
- RES_USEVC Use TCP connections for queries instead of UDP datagrams.
-
- RES_STAYOPEN Used with RES_USEVC to keep the TCP connection open between
- queries. This is useful only in programs that regularly do
- many queries. UDP should be the normal mode used.
-
- RES_IGNTC Unused currently (ignore truncation errors, i.e., don't
- retry with TCP).
-
- RES_RECURSE Set the recursion-desired bit in queries. This is the de-
- fault. (rreess__sseenndd() does not do iterative queries and ex-
- pects the name server to handle recursion.)
-
- RES_DEFNAMES If set, rreess__sseeaarrcchh() will append the default domain name to
- single-component names (those that do not contain a dot).
-
- This option is enabled by default.
-
- RES_DNSRCH If this option is set, rreess__sseeaarrcchh() will search for host
- names in the current domain and in parent domains; see
- hostname(7). This is used by the standard host lookup rou-
- tine gethostbyname(3). This option is enabled by default.
-
- The rreess__iinniitt() routine reads the configuration file (if any; see
- resolv.conf(5)) to get the default domain name, search list and the In-
- ternet address of the local name server(s). If no server is configured,
- the host running the resolver is tried. The current domain name is de-
- fined by the hostname if not specified in the configuration file; it can
- be overridden by the environment variable LOCALDOMAIN. This environment
- variable may contain several blank-separated tokens if you wish to over-
- ride the _s_e_a_r_c_h _l_i_s_t on a per-process basis. This is similar to the
- _s_e_a_r_c_h command in the configuration file. Another environment variable
- RES_OPTIONS can be set to override certain internal resolver options
- which are otherwise set by changing fields in the ___r_e_s structure or are
- inherited from the configuration file's _o_p_t_i_o_n_s command. The syntax of
- the RES_OPTIONS environment variable is explained in resolv.conf(5).
- Initialization normally occurs on the first call to one of the following
- routines.
-
- The rreess__qquueerryy() function provides an interface to the server query mecha-
- nism. It constructs a query, sends it to the local server, awaits a re-
- sponse, and makes preliminary checks on the reply. The query requests
- information of the specified _t_y_p_e and _c_l_a_s_s for the specified fully-qual-
- ified domain name _d_n_a_m_e. The reply message is left in the _a_n_s_w_e_r buffer
- with length _a_n_s_l_e_n supplied by the caller.
-
- The rreess__sseeaarrcchh() routine makes a query and awaits a response like
- rreess__qquueerryy(), but in addition, it implements the default and search rules
- controlled by the RES_DEFNAMES and RES_DNSRCH options. It returns the
- first successful reply.
-
- The remaining routines are lower-level routines used by rreess__qquueerryy(). The
- rreess__mmkkqquueerryy() function constructs a standard query message and places it
- in _b_u_f. It returns the size of the query, or -1 if the query is larger
- than _b_u_f_l_e_n. The query type _o_p is usually QUERY, but can be any of the
- query types defined in <_a_r_p_a_/_n_a_m_e_s_e_r_._h>. The domain name for the query is
- given by _d_n_a_m_e. _N_e_w_r_r is currently unused but is intended for making up-
- date messages.
-
- The rreess__sseenndd() routine sends a pre-formatted query and returns an answer.
- It will call rreess__iinniitt() if RES_INIT is not set, send the query to the lo-
- cal name server, and handle timeouts and retries. The length of the re-
- ply message is returned, or -1 if there were errors.
-
- The ddnn__ccoommpp() function compresses the domain name _e_x_p___d_n and stores it in
- _c_o_m_p___d_n. The size of the compressed name is returned or -1 if there were
- errors. The size of the array pointed to by _c_o_m_p___d_n is given by _l_e_n_g_t_h.
- The compression uses an array of pointers _d_n_p_t_r_s to previously-compressed
- names in the current message. The first pointer points to to the begin-
- ning of the message and the list ends with NULL. The limit to the array
- is specified by _l_a_s_t_d_n_p_t_r. A side effect of ddnn__ccoommpp() is to update the
- list of pointers for labels inserted into the message as the name is com-
- pressed. If _d_n_p_t_r is NULL, names are not compressed. If _l_a_s_t_d_n_p_t_r is
- NULL, the list of labels is not updated.
-
- The ddnn__eexxppaanndd() entry expands the compressed domain name _c_o_m_p___d_n to a
- full domain name The compressed name is contained in a query or reply
- message; _m_s_g is a pointer to the beginning of the message. The uncom-
- pressed name is placed in the buffer indicated by _e_x_p___d_n which is of size
- _l_e_n_g_t_h. The size of compressed name is returned or -1 if there was an er-
- ror.
-
- FFIILLEESS
- /etc/resolv.conf The configuration file see resolv.conf(5).
-
- SSEEEE AALLSSOO
- gethostbyname(3), named(8), resolv.conf(5), hostname(7),
-
- _R_F_C_1_0_3_2, _R_F_C_1_0_3_3, _R_F_C_1_0_3_4, _R_F_C_1_0_3_5, _R_F_C_9_7_4
-
- _N_a_m_e _S_e_r_v_e_r _O_p_e_r_a_t_i_o_n_s _G_u_i_d_e _f_o_r _B_I_N_D.
-
- HHIISSTTOORRYY
- The rreess__qquueerryy function appeared in 4.3BSD.
-
- 4.3 Berkeley Distribution June 4, 1993 3
-